Closed
Conversation
adds a launcher component that builds all apworlds on top of ArchipelagoMW#4516 --------- Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com> Co-authored-by: qwint <qwint.42@gmail.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
… the compatible_version ArchipelagoMW#5479
* add archipelago.json * newline * Add authors * Make it a list
… manifest. (ArchipelagoMW#5498) * Legendary Voyage, Mystic Treasure Update * Add manifest * Correct Manifest version. * Fix file encoding
* Add archipelago.json * Add authors * make it a list
* move goal kdl3 * mm2 * missed the singular important line
* Update docs annotations * Update settings recommendation * Remove Dict in comment
* sc2: Fixing Launcher.py launch not properly handling command-line arguments * sc2: Fixing some old option names in webhost * sc2: Switching to common client url parameter handling
* Fix Conviction logic for Grant Story Tech - Kinetic Blast and Crushing Grip is available for the mission if story tech is granted * Review updates
* sc2: Changing default campaign options to something more performative and desirable for new players * sc2: Fixing broken test that was missed in roundup * SC2: Update tests for new defaults * SC2: Fix incomplete test * sc2: Updating description for enabled campaigns to mention which are free to play * sc2: PR comments; Updating additional unit tests that were affected by a default change * sc2: Adding a comment to the Enabled Campaigns option to list all the valid campaign names * sc2: Adding quotes wrapping sample values in enabled_campaigns comment to aid copy-pasting --------- Co-authored-by: Salzkorn <salzkitty@gmail.com>
* core: Option to skip "unused" item links * Update worlds/generic/docs/advanced_settings_en.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update BaseClasses.py Co-authored-by: Scipio Wright <scipiowright@gmail.com> --------- Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* init * merge upstream/main * improve option tooltips, clean up file a bit * ladx feels like more of an ocean game * one more * more cleanup * some reorg * Apply suggestions from code review Co-authored-by: Scipio Wright <scipiowright@gmail.com> * clean up accidental newlines * rewording * dont do the ohko alias --------- Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* init * we already had the generic name, just use it * cap hints at 101 * nevermind, the name is just baked in here
…tions can be set in it ArchipelagoMW#5414
* Making the fix better (thanks medic) * Make it actually return false if it gets to the backup lists and fails them * Fix stuff after merge * Add outlet regions, create new regions as needed for them * Put together part of decoupled and direction pairs * make direction pairs work * Make decoupled work * Make fixed shop work again * Fix a few minor bugs * Fix a few minor bugs * Fix plando * god i love programming * Reorder portal list * Update portal sorter for variable shops * Add missing parameter * Some cleanup of prints and functions * Fix typo * it's aliiiiiive * Make seed groups not sync decoupled * Add test with full-shop plando * Fix bug with vanilla portals * Handle plando connections and direction pair errors * Update plando checking for decoupled * Fix typo * Fix exception text to be shorter * Add some more comments * Add todo note * Remove unused safety thing * Remove extra plando connections definition in options * Make seed groups in decoupled with overlapping but not fully overlapped plando connections interact nicely without messing with what the entrances look like in the spoiler log * Fix weird edge case that is technically user error * Add note to fixed shop * Fix parsing shop names in UT * Remove debug print * Actually make UT work * multiworld. to world. * Fix typo from merge * Make it so the shops show up in the entrance hints * Fix bug in ladder storage rules * Remove blank line * # Conflicts: # worlds/tunic/__init__.py # worlds/tunic/er_data.py # worlds/tunic/er_rules.py # worlds/tunic/er_scripts.py # worlds/tunic/rules.py # worlds/tunic/test/test_access.py * Fix issues after merge * Update plando connections stuff in docs * Make early bushes only contain grass * Fix library mistake * Backport changes to grass rando (ArchipelagoMW#20) * Backport changes to grass rando * add_rule instead of set_rule for the special cases, add special cases for back of swamp laurels area cause I should've made a new region for the swamp upper entrance * Remove item name group for grass * Update grass rando option descriptions - Also ignore grass fill for single player games * Ignore grass fill option for solo rando * Update er_rules.py * Fix pre fill issue * Remove duplicate option * Add excluded grass locations back * Hide grass fill option from simple ui options page * Check for start with sword before setting grass rules * Update worlds/tunic/options.py Co-authored-by: Scipio Wright <scipiowright@gmail.com> * has_stick -> has_melee * has_stick -> has_melee * Add a failsafe for direction pairing * Fix playthrough crash bug * Remove init from logicmixin * Updates per code review (thanks hesto) * has_stick to has_melee in newer update * has_stick to has_melee in newer update * Exclude grass from get_filler_item_name - non-grass rando games were accidentally seeing grass items get shuffled in as filler, which is funny but probably shouldn't happen * Update worlds/tunic/__init__.py Co-authored-by: Scipio Wright <scipiowright@gmail.com> * Apply suggestions from code review Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: Scipio Wright <scipiowright@gmail.com> * change the rest of grass_fill to local_fill * Filter out grass from filler_items * remove -> discard * Update worlds/tunic/__init__.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Starting out * Rules for breakable regions * # Conflicts: # worlds/tunic/__init__.py # worlds/tunic/combat_logic.py # worlds/tunic/er_data.py # worlds/tunic/er_rules.py # worlds/tunic/er_scripts.py * Cleanup more stuff after merge * Revert "Cleanup more stuff after merge" This reverts commit a6ee9a9. * Revert "# Conflicts:" This reverts commit c74ccd7. * Cleanup more stuff after merge * change has_stick to has_melee * Update grass list with combat logic regions * More fixes from combat logic merge * Fix some dumb stuff (ArchipelagoMW#21) * Reorganize pre fill for grass * make the rest of it work, it's pr ready, boom * Make it work in not pot shuffle * Merge grass rando * multiworld -> world get_location, use has_any * Swap out region for West Garden Before Terry grass * Adjust west garden rules to add west combat region * Adjust grass regions for south checkpoint grass * Adjust grass regions for after terry grass * Adjust grass regions for west combat grass * Adjust grass regions for dagger house grass * Adjust grass regions for south checkpoint grass, adjust regions and rules for some related locations * Finish the remainder of the west garden grass, reformat ruined atoll a little * More hex quest updates - Implement page ability shuffle for hex quest - Fix keys behind bosses if hex goal is less than 3 - Added check to fix conflicting hex quest options - Add option to slot data * Change option comparison * Change option checking and fix some stuff - also keep prayer first on low hex counts * Update option defaulting * Update option checking * Fix option assignment again * Merge in hex hunt * Merge in changes * Clean up imports * Add ability type to UT stuff * merge it all * Make local fill work across pot and grass (to be adjusted later) * Make separate pools for the grass and non-grass fills * Fix id overlap * Update option description * Fix default * Reorder localfill option desc * Load the purgatory ones in * Adjustments after merge * Fully remove logicrules * Fix UT support with fixed shop option * Add breakable shuffle to the ut stuff * Make it load in a specific number of locations * Add Silent's spoiler log ability thing * Fix for groups * Fix for groups * Fix typo * Fix hex quest UT support * Use .get * UT fixes, classification fixes * Rename some locations * Adjust guard house names * Adjust guard house names * Rework create_item * Fix for plando connections * Rename, add new breakables * Rename more stuff * Time to rename them again * Fix issue with fixed shop + decoupled * Put in an exception to catch that error in the future * Update create_item to match main * Update spoiler log lines for hex abilities * Burn the signs down * Bring over the combat logic fix * Merge in combat logic fix * Silly static method thing * Move a few areas to before well instead of east forest * Add an all_random hidden option for dev stuff * Port over changes from main * Fix west courtyard pot regions * Remove debug prints * Fix fortress courtyard and beneath the fortress loc groups again * Add exception handling to deal with duplicate apworlds * Fix typo * More missing loc group conversions * Initial fuse shuffle stuff * Fix gun missing from combat_items, add new for combat logic cache, very slight refactor of check_combat_reqs to let it do the changeover in a less complicated fashion, fix area being a boss area rather than non-boss area for a check * Add fuse shuffle logic * reorder atoll statue rule * Update traversal reqs * Remove fuse shuffle from temple door * Combine rules and option checking * Add bell shuffle; fix fuse location groups * Fix portal rules not requiring prayer * Merge the grass laurels exit grass PR * Merge in fortress bridge PR * Do a little clean up * Fix a regression * Update after merge * Some more stuff * More Silent changes * Update more info section in game info page * Fix rules for atoll and swamp fuses * Precollect cathedral fuse in ER * actually just make the fuse useful instead of progression * Add it to the swamp and cath rules too * Fix cath fuse name * Minor fixes and edits * Some UT stuff * Fix a couple more groups * Move a bunch of UT stuff to its own file * Fix up a couple UT things * Couple minor ER fixes * Formatting change * UT poptracker stuff enabled since it's optional in one of the releases * Add author string to world class * Adjust local fill option name * Update ut_stuff to match the PR * Add exception handling for UT with old apworld * Fix missing tracker_world * Remove extra entrance from cath main -> elevator Entry <-> Elev exists, Entry <-> Main exists So no connection is needed between Main and Elev * Fix so that decoupled doesn't incorrectly use get_portal_info and get_paired_portal * Fix so that decoupled doesn't incorrectly use get_portal_info and get_paired_portal * Update for breakables poptracker * Backup and warnings instead * Update typing * Delete old regions and rules, move stuff to logic_helpers and constants * Delete now much less useful tests * Fix breakables map tracking * Add more comments to init * Add todo to grass.py * Fix up tests * Fully remove fixed_shop * Finish hard deprecating FixedShop * Fix zig skip showing up in decoupled fixed shop * Make local_fill show up on the website * Merge with main * Fixes after merge * More fixes after merge * oh right that's why it was there, circular imports * Swap {} to () * Add fuse and bell shuffle to seed groups since they're logically significant for entrance pairing --------- Co-authored-by: silent-destroyer <osilentdestroyer@gmail.com> Co-authored-by: Silent <110704408+silent-destroyer@users.noreply.github.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* sc2: Fixing a Reaver item being classified as a scout item * sc2: any_units now requires any AA in the first 5 units * Fixing Shoot the Messenger not requiring AA in a hard rule * Fixing any_unit zerg still allowing unupgraded mercs * sc2: Fixed an issue where terran was requiring zerg anti-air in any_units
This reverts commit 8a98910.
Items towards the end of the list are placed first. Generally, the most difficult to place items should be placed first, though there may be more consideration about placing items that unlock locations within a dungeon first, so that the fill algorithm can't fill all reachable locations with items that don't give access to more locations, and then have to swap.
Allowing the all_state to sweep to pick up already placed items before removing the items from the all_items_list means that the all_state could have already picked up placed items that require the items in all_items_list to be able to reach. Removing the items in all_items_list won't 'un-collect' these items that should not have been reachable in the first place, so it is important to remove the items from all_items_list before sweeping the all_state. Technically, it is not necessary to sweep the all_state at all because fill_restrictive will sweep it, but it is better performance to pass as maximal a state as possible to fill_restrictive so that it has less sweeping work to do when placing items.
If a world places items during pre_fill, it should implement get_pre_fill_items, so that placements made by item plando (and, if implemented, logical ER performed in connect_entrances) correctly account for the assumption that the items in get_pre_fill_items will be reachable. get_pre_fill_items being missing also meant that, where pre_fill removes from all_state the items in all_items_list, those items were never collected into all_state to begin with. If all_state were to have collected some items that were also dungeon-specific/local-dungeon, e.g. a player added some dungeon-specific/local-dungeon to their starting inventory, then those already collected items would have been removed when they should not have been. By implementing get_pre_fill_items, the items in all_items_list are now both collected into all_state and then removed from all_state.
This results in less swapping, and reduces the chance of fill failure in pre_fill. The comments had also previously specified that Master Keys should be placed first, but were being placed after elements. With this last change, I ran about 50000 fuzzer generations with 0 failures from pre_fill's dungeon fill.
Sets are unordered, and typically will have a different iteration order for every python process. Generation appears to now be deterministic.
In minimal accessibility, if the goal is reachable with a state's current inventory + reachable pre-placed items, then the item to be placed can be placed while ignoring reachability. If access to all areas of a dungeon is not required for a player's goal, and there is a custom dungeon fill performed by a world, then it is common for a custom dungeon fill to place most/all of its items while ignoring reachability, which can often result in locking large parts of dungeons by having dungeon keys locked behind themselves. Removing the "Victory" event, or preventing the "Victory" event from being collected prevents the features of minimal accessibility from taking effect when placing dungeon-specific/dungeon-local items. This is not strictly required for a world, but it has been a general complaint from AP users playing games with dungeon fills with minimal accessibility, that dungeons can get self-locked too often, degrading the AP playthrough experience.
start_inventory is a user-facing option that is only used during regular generation. Unit tests only run generation steps, and do not process start inventory options. Worlds should use push_precollected if they want to put items into start inventory.
`|=` has no guarantee that an in-place operation occurs, only that you
typically should expect `a |= b` to result in the same `a` as from
`a = a | b` (though even that is not strictly guaranteed).
e.g.
```python
>>> s = {1, 2, 3}
>>> s2 = s
>>> d = {7: "x", 8: "y", 9: "z"}
>>> s |= d.keys()
>>> s
{1, 2, 3, 7, 8, 9}
>>> s2
{1, 2, 3}
```
The use of `|=` where an in-place operation is *required* has been
replaced with using the `.update()` method.
Owner
Author
|
Apologies; this was meant to be an internal PR. I swear I changed the merge target; apparently I did not. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR:
item_name_groupsfrom the item groups already specified in Add more and better groups CCMultiworldRandomizer#46